package databases

import (
	"fmt"

	"gorm.io/gorm"
)

// AutoMigrate 自动迁移数据库表结构
// 该函数接受一个数据库连接实例和多个模型接口，
// 使用GORM的AutoMigrate功能自动创建或更新表结构
func AutoMigrate(db *gorm.DB, models ...interface{}) error {
	if db == nil {
		return fmt.Errorf("数据库连接不能为空")
	}

	if len(models) == 0 {
		return fmt.Errorf("至少需要提供一个模型")
	}

	if err := db.AutoMigrate(models...); err != nil {
		return fmt.Errorf("数据库表迁移失败: %w", err)
	}

	return nil
}

// MustAutoMigrate 自动迁移数据库表结构（遇到错误会panic）
// 这是AutoMigrate的panic版本，适用于初始化阶段
func MustAutoMigrate(db *gorm.DB, models ...interface{}) {
	if err := AutoMigrate(db, models...); err != nil {
		panic(err)
	}
}
